@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM Docker 启动脚本 (Windows 版本)
REM 用于快速启动智能体分享平台的 Docker 服务

set "action=%~1"
if "%action%"=="" set "action=start"

REM 检查 Docker 是否安装
:check_docker
echo [信息] 检查 Docker 环境...
docker --version >nul 2>&1
if errorlevel 1 (
    echo [错误] Docker 未安装，请先安装 Docker Desktop
    pause
    exit /b 1
)

docker compose version >nul 2>&1
if errorlevel 1 (
    docker-compose --version >nul 2>&1
    if errorlevel 1 (
        echo [错误] Docker Compose 未安装，请先安装 Docker Compose
        pause
        exit /b 1
    ) else (
        set "COMPOSE_CMD=docker-compose"
    )
) else (
    set "COMPOSE_CMD=docker compose"
)

echo [成功] Docker 环境检查通过
goto :main

REM 检查环境配置文件
:check_env_file
echo [信息] 检查环境配置文件...
if not exist ".env.docker" (
    echo [警告] .env.docker 文件不存在，将使用默认配置
) else (
    echo [成功] 环境配置文件存在
)
goto :eof

REM 构建 Docker 镜像
:build_images
echo [信息] 构建 Docker 镜像...
%COMPOSE_CMD% build --no-cache
if errorlevel 1 (
    echo [错误] Docker 镜像构建失败
    pause
    exit /b 1
)
echo [成功] Docker 镜像构建成功
goto :eof

REM 启动服务
:start_services
echo [信息] 启动 Docker 服务...
%COMPOSE_CMD% up -d
if errorlevel 1 (
    echo [错误] Docker 服务启动失败
    pause
    exit /b 1
)
echo [成功] Docker 服务启动成功
echo [信息] 服务访问地址:
echo   前端: http://localhost:80
echo   后端 API: http://localhost:3001
goto :eof

REM 显示服务状态
:show_status
echo.
echo [信息] 服务状态:
%COMPOSE_CMD% ps
goto :eof

REM 显示日志
:show_logs
echo.
echo [信息] 查看服务日志 (按 Ctrl+C 退出):
%COMPOSE_CMD% logs -f
goto :eof

REM 停止服务
:stop_services
echo [信息] 停止 Docker 服务...
%COMPOSE_CMD% down
if errorlevel 1 (
    echo [错误] Docker 服务停止失败
    pause
    exit /b 1
)
echo [成功] Docker 服务已停止
goto :eof

REM 清理资源
:clean_resources
echo [信息] 清理 Docker 资源...
%COMPOSE_CMD% down -v --rmi all
if errorlevel 1 (
    echo [错误] Docker 资源清理失败
    pause
    exit /b 1
)
echo [成功] Docker 资源清理完成
goto :eof

REM 显示帮助信息
:show_help
echo 智能体分享平台 Docker 启动脚本 (Windows 版本)
echo.
echo 用法: %~nx0 [选项]
echo.
echo 选项:
echo   start     构建并启动服务 (默认)
echo   stop      停止服务
echo   restart   重启服务
echo   status    显示服务状态
echo   logs      查看服务日志
echo   build     仅构建镜像
echo   clean     停止服务并清理资源
echo   help      显示此帮助信息
echo.
echo 示例:
echo   %~nx0 start    # 启动服务
echo   %~nx0 logs     # 查看日志
echo   %~nx0 clean    # 清理资源
goto :eof

REM 主函数
:main
if "%action%"=="start" (
    call :check_env_file
    call :build_images
    call :start_services
    call :show_status
) else if "%action%"=="stop" (
    call :stop_services
) else if "%action%"=="restart" (
    call :stop_services
    timeout /t 2 /nobreak >nul
    call :check_env_file
    call :start_services
    call :show_status
) else if "%action%"=="status" (
    call :show_status
) else if "%action%"=="logs" (
    call :show_logs
) else if "%action%"=="build" (
    call :build_images
) else if "%action%"=="clean" (
    call :clean_resources
) else if "%action%"=="help" (
    call :show_help
) else (
    echo [错误] 未知选项 '%action%'
    call :show_help
    pause
    exit /b 1
)

if "%action%" neq "logs" (
    echo.
    echo 按任意键退出...
    pause >nul
)

endlocal